# === 携帯端末用LinkRenderer クラス
class Mobile::LinkRenderer < WillPaginate::ViewHelpers::LinkRenderer

  # === ページネーションHTML作成メソッド
  # 携帯端末用に next_page, previous_page リンクのみ表示する
  # See: WillPaginate::LinkRenderer
  def to_html
    html = pagination.delete_if do |item|
      item.is_a?(Fixnum)
    end.map do |item|
      send(item)
    end.join(@options[:separator])

    @options[:container] ? html_container(html) : html
  end

protected

  # === previous_page リンク作成メソッド
  # See: WillPaginate::LinkRenderer
  def previous_page
    previous_or_next_page(@collection.previous_page, @options[:previous_label], 'previous_page')
  end

  # === next_page リンク作成メソッド
  # See: WillPaginate::LinkRenderer
  def next_page
    previous_or_next_page(@collection.next_page, @options[:next_label], 'next_page')
  end

  # === ページネーションリンク作成メソッド
  # accesskey属性を追加したリンクを作成
  def previous_or_next_page(page, text, classname)
    if page
      link(text, page, :class => classname, :accesskey => accesskey(page))
    else
      ''
    end
  end

private

  # === 携帯用アクセスキー返却メソッド
  def accesskey(page)
    case page
    when @collection.previous_page
      (@options[:previous_accesskey] || 4).to_s
    when @collection.next_page
      (@options[:next_accesskey] || 6).to_s
    else
      ''
    end
  end

end
